package com.thtf.openguess.util;

/**
 * @ClassName: ApiCode
 * @Description: REST API 响应码
 * @Author lisu
 * @Date 2019-10-23
 * @Version V1.0
 **/
public enum ApiCode {
    /**
     * 操作成功
     */
    SUCCESS(200, "操作成功"),
    /**
     * 非法访问
     */
    UNAUTHORIZED(401, "非法访问"),
    /**
     * 没有权限
     */
    NOT_PERMISSION(403, "没有权限"),
    /**
     * 你请求的资源不存在
     */
    NOT_FOUND(404, "你请求的资源不存在"),

    /**
     * 未获取到登录用户信息
     */
    NO_USERDATA_IN_SESSION(407, "未获取到登录用户信息"),

    /**
     * 当前企业或部门没有配置登录权限
     */
    NO_BASIC_INFORMATION_PERMISSION(405, "当前企业或部门没有配置登录权限"),

    /**
     * 当前企业或部门 编码为空
     */
    ONE_SUIT_TABLE_COMPANY_CODE_NULL(406, "当前企业或部门 编码为空"),

    /**
     * 操作失败
     */
    FAIL(500, "操作失败"),


    /**
     * 登陆失败
     */
    LOGIN_EXCEPTION(4000, "登陆失败"),


    /**
     * 系统异常
     */
    SYSTEM_EXCEPTION(5000, "系统异常!"),

    /**
     * 请求参数校验异常
     */
    PARAMETER_EXCEPTION(5001, "请求参数校验异常"),

    /**
     * 请求参数解析异常
     */
    PARAMETER_PARSE_EXCEPTION(5002, "请求参数解析异常"),

    /**
     * HTTP Media 类型异常
     */
    HTTP_MEDIA_TYPE_EXCEPTION(5003, "HTTP Media 类型异常"),

    /**
     * 业务处理异常
     */
    BUSINESS_EXCEPTION(6000, "业务处理异常"),

    /**
     * 需求表新增异常
     */
    //智能供需-需求相关异常 from 7000
    NEW_DEMAND_EXCEPTION(7001, "需求表新增异常"),

    /**
     * 需求表新增异常
     */
    UPDATE_FILE_BELONG_ID_EXCEPTION(7002, "需求表新增异常"),

    /**
     * 文件已经被使用
     */
    FILE_IS_BEING_USED_EXCEPTION(7003, "文件已经被使用"),

    /**
     * 登录用户公司编码信息异常
     */
    LOGIN_COMPANY_CODE_EMPTY_EXCEPTION(7004, "登录用户公司编码信息异常"),

    /**
     * 上传附件内容异常
     */
    UPLOAD_DATA_CHECK_EXCEPTION(7005, "上传附件内容异常"),

    /**
     * 供给表新增异常
     */
    NEW_SUPPLY_EXCEPTION(7006, "供给表新增异常"),

    /**
     * 上传的地区信息不在允许范围
     */
    LOCATION_NOT_SUPPORT(7007, "->上传的地区信息不在允许范围"),

    /**
     * 内部错误，存在多同名省份数据
     */
    LOCATION_DATA_EXCEPTION(7008, "->内部错误，存在多同名省份数据"),

    /**
     * 无相关联关系的地区信息
     */
    LOCATION_NO_RELATIONSHIP(7009, "->无相关联关系的地区信息"),

    /**
     * 请输入匹配类型:1.需求中进行得匹配操作 2.供给中进行得匹配操作
     */
    MATCH_TYPE_EXCEPTION(7010, "请输入匹配类型:1.需求中进行得匹配操作 2.供给中进行得匹配操作"),

    /**
     * 请输入正确的匹配类型:1.需求中进行得匹配操作 2.供给中进行得匹配操作
     */
    MATCH_TYPE_NOT_IN_SCOPE(7011, "请输入正确的匹配类型:1.需求中进行得匹配操作 2.供给中进行得匹配操作"),

    /**
     * 登陆用户不是企业用户，无权访问
     */
    LOGIN_USER_NOT_ENTERPRISE_USER(7012, "登陆用户不是企业用户，无权访问"),
    /**
     * 配置信息读取异常
     */
    CONFIG_INVALID_EXCEPTION(7013, "配置信息读取异常"),
    /**
     * 数据库新增异常
     */
    NEW_DEMAND_SUPPLY_DB_EXCEPTION(7014, "数据库新增异常"),
    /**
     * 发布数据不能修改，请检测前端传递id是否正确
     */
    PUBLISH_STATE_UPDATE_EXCEPTION(7015, "发布数据不能修改，请检测前端传递id是否正确"),
    /**
     * 批量上传excel异常
     * 检测到敏感数据
     */
    EXCEL_SENSITIVE_EXCEPTION(7122, " ->检测到敏感数据:"),
    /**
     * 批量上传excel异常
     * 请输入正确供给类别
     */
    EXCEL_SUPPLY_TYPE_EXCEPTION(7116, " ->请输入正确供给类别"),
    /**
     * 批量上传excel异常
     * 请填写供给物名称
     */
    EXCEL_SUPPLY_NAME_EXCEPTION(7117, " ->请填写供给物名称"),
    /**
     * 批量上传excel异常
     * 请输入正确需求类别
     */
    EXCEL_DEMAND_TYPE_EXCEPTION(7116, " ->请输入正确需求类别"),
    /**
     * 批量上传excel异常
     * 请填写需求物名称
     */
    EXCEL_DEMAND_NAME_EXCEPTION(7117, " ->请填写需求物名称"),
    /**
     * 批量上传excel异常
     * 请填写正确的有效期限
     */
    EXCEL_EFFECT_EXCEPTION(7118, " ->请填写正确的有效期限"),
    /**
     * 批量上传excel异常
     * 请填写联系人信息
     */
    EXCEL_PERSON_EXCEPTION(7119, " ->请填写联系人信息"),
    /**
     * 批量上传excel异常
     * 请填写联系人电话
     */
    EXCEL_PHONE_EXCEPTION(7120, " ->请填写联系人电话"),
    /**
     * 批量上传excel异常
     * 请填写正确的联系人电话
     */
    EXCEL_RIGHT_PHONE_EXCEPTION(7121, " ->请填写正确的联系人电话"),
    /**
     * 批量上传excel异常
     * 请填写正确的联系人邮箱
     */
    EXCEL_RIGHT_EMAIL_EXCEPTION(7122, " ->请填写正确的联系人邮箱"),
    /**
     * 批量上传excel异常
     * 请按照规定的地址格式进行填写
     */
    EXCEL_RIGHT_LOCATION_EXCEPTION(7123, " ->请按照规定的地址格式进行填写"),
    /**
     * 批量上传excel异常
     * 请填写地址信息
     */
    EXCEL_LOCATION_EXCEPTION(7124, " ->请填写地址信息"),
    /**
     * 批量上传excel异常
     * 联系人或联系电话不能为空
     */
    CONTACT_PERSON_OR_NUMBER_IS_BLANK(7125, "联系人或联系电话不能为空"),

    /**
     * 敏感词校验异常
     */
    SENSITIVE_OBJECT_NULL(7201, "测试敏感对象为空"),

/**持久层异常*/
    /**
     * 添加历史搜索数据记录异常
     */
    DAO_HISTORY_ADD_EXCEPTION(7301, "添加历史搜索数据记录异常"),
    /**
     * 更新联系方式关系表异常
     */
    DAO_UPDATE_RECORD_EXCEPTION(7302, "更新联系方式关系表异常"),
    /**
     * 插入联系方式关系表异常
     */
    DAO_INSERT_RECORD_EXCEPTION(7303, "插入联系方式关系表异常"),

    /**
     * 剩余时间转换
     */
    CONVERT_2_REMAINING_TIME_EXCEPTION(8001, "发布数据开始时间 结束时间异常"),

/**调查问卷*/
    /**
     * 提交调查问卷异常
     */
    SUBMIT_QUESTIONNAIRE_EXCEPTION(8002, "提交调查问卷异常"),
    /**
     * 当前无可展示试卷
     */
    CURRENT_NO_USAGE_PAPER(8004, "当前无可展示试卷"),
    /**
     * 调查问卷转换异常
     */
    QUESTIONNAIRE_REDIS_CONVERT_EXCEPTION(8003, "调查问卷转换异常"),
    /**
     * 调查问卷数据库题目选项格式异常
     */
    QUESTIONNAIRE_DB_DATA_FORMAT_EXCEPTION(8005, "调查问卷数据库题目选项格式异常"),
    /**
     * 当前无试卷或不存在指定编号的试卷
     */
    QUESTIONNAIRE_NO_THIS_PAPER_EXCEPTION(8006, "当前无试卷或不存在指定编号的试卷"),
    /**
     * 之前已经提交过试卷，无需在做调研
     */
    QUESTIONNAIRE_HAS_BEEN_HANDLE_IN_DB(8007, "之前已经提交过试卷，无需在做调研"),
/**初始化行政区划表*/
    /**
     * 初始化行政区划更新异常
     */
    INIT_ADMINISTRATION_UPDATE_EXCEPTION(8101, "初始化行政区划-数据更新异常"),
/**行政区划*/
    /**
     * 行政区划数据结构异常
     */
    STATISTIC_EXCEPTION(8201, "行政区划数据结构异常"),
    /**
     * 产业数据结构异常
     */
    STATISTIC_TRADE_EXCEPTION(8202, "产业数据结构异常"),
    /**
     * 没有与当前登录人注册地区信息所对应的行政区划数据
     */
    NO_STATISTIC_LOCATION_INFO_FOR_LOGIN_USER_EXCEPTION(8203, "行政区划数据权限"),
    /**
     * 没有与当前登录人注册地区信息所对应的行政区划数据
     */
    STATISTIC_LOCATION_OR_DOMAIN_INFO_FOR_LOGIN_USER_EXCEPTION(8205, "产业或行政区划数据结构异常"),
    /**
     * 登录人没有对应的地区编码
     */
    LOGIN_USER_NO_LOCATION_INFORMATION_IN_T_INFORMATION(8204, "没有与登录人对应的行政区划数据");


    /**
     * 异常编码
     */
    private final int code;
    /**
     * 异常信息
     */
    private final String msg;

    ApiCode(final int code, final String msg) {
        this.code = code;
        this.msg = msg;
    }

    /**
     * 根据code获取apiCode
     */
    public static ApiCode getApiCode(int code) {
        ApiCode[] ecs = ApiCode.values();
        for (ApiCode ec : ecs) {
            if (ec.getCode() == code) {
                return ec;
            }
        }
        return SUCCESS;
    }

    /**
     * 获取编码
     */
    public int getCode() {
        return code;
    }

    /**
     * 获取消息
     */
    public String getMsg() {
        return msg;
    }

}
